# getAllPairs.py 修改导入顺序（关键修复）
import os
import sys
import django

# 必须先设置路径再初始化Django
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  # 向上三级到项目根目录
sys.path.insert(0, BASE_DIR)  # 确保优先查找项目目录

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings")
django.setup()  # ✅ 必须在所有模型导入之前

from kData.models import KData
from tradingPairs.models import TradingPairs
from utils.binanceUtils import config
from binance.client import Client
import datetime
import time

# 获取API配置信息
api_key = config.BinanceConfig.API_KEY
api_secret = config.BinanceConfig.API_SECRET
proxies = config.BinanceConfig.PROXIES
# 实例化客户端
client = Client(api_key, api_secret, {'proxies': proxies})
# 根据BTCUSDT获取TradingPairs信息
BTCUSDT = TradingPairs.objects.get(trading_pair="BTCUSDT")
# 初始化存储列表
k_data_list = []
end_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 分5次获取数据(每次最多1000条)
for i in range(5):
    # 获取数据
    klines = client.get_historical_klines(
        symbol="BTCUSDT",
        interval=Client.KLINE_INTERVAL_1HOUR,
        limit=1000,
        end_str=end_time)
    # 获取数据结束的时间
    end_time = klines[-1][6]
    # 循环添加数据
    klines = klines[::-1]
    for kline in klines:
        KData.objects.create(
            trading_pair_id=BTCUSDT,
            time=datetime.datetime.fromtimestamp(kline[0]/1000, tz=datetime.timezone(datetime.timedelta(hours=8))),
            open=kline[1],
            high=kline[2],
            low=kline[3],
            close=kline[4],
            volume=kline[5],
        )
    time.sleep(3)